package cn.java76.spring1.aop;

import org.aspectj.lang.ProceedingJoinPoint;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * @author oldliu
 * @since 1.0
 */
public class TimeInterceptor {

    public Object around(ProceedingJoinPoint jp) throws Throwable {
        System.out.println(jp.getTarget() + "是被代理的类");
        //jp.getSignature()//方法签名，包含了方法的名字等等
        //jp.getArgs()//方法的参数
        System.out.println("方法" + jp.getSignature().getName() + " 在 " + new Date() + "被调用，参数是" + Arrays.toString(jp.getArgs()));
        if (jp.getSignature().getName().equals("add")) {
            Student stu = (Student) jp.getArgs()[0];//有点缺陷
            if (!(stu.getPhone().length() == 11 && stu.getPhone().startsWith("1"))) {
                throw  new RuntimeException("手机号不合法！");
                //return 0;
            }
        }
        Object result = jp.proceed();//放行
        System.out.println("方法【" + jp.getSignature().getName() + "】执行返回了" + result);
        //任他返回，返回再处理
        //for in这样的迭代器循环，只读。。。
        //for(int i=0;i<?
        if(jp.getSignature().getName().equals("findAll")){
            List<Student> list=(List<Student>)result;
            //
            for(int i=0;i<list.size();i++){
                if(list.get(i).getName().equals("admin")){
                    list.remove(i);
                    break;
                }
            }
        }
        return result;
    }
}
